/**
 * 该中间件用于所有表单的校验
 */


const idValidator = async (ctx, next) => {

    // post和get请求获取参数方式不一样
    let id = ctx.request.body.id || ctx.query.id;

    // 合法性合理性校验
    if (!id) {
        ctx.app.emit('error', {
            code: '2',
            message: 'id不能为空！'
        }, ctx);
        return;
    }
    await next();
};

// 游戏表单校验
const gameFormValidator = async (ctx, next) => {
    let {game_name, game_url, game_desc, game_detail} = ctx.request.body;
    // 合法性合理性校验
    if (!game_name || !game_url) {
        ctx.app.emit('error', {
            code: '2',
            message: '游戏名称或游戏路径不能为空！'
        }, ctx);
        return;
    }
    if (!game_desc || !game_detail) {
        ctx.app.emit('error', {
            code: '2',
            message: '游戏简介或游戏详情不能为空！'
        }, ctx);
        return;
    }
    await next();
};

// 物品表单校验
const itemsFormValidator = async (ctx, next) => {
    let {itemId, itemName, itemDesc} = ctx.request.body;
    // 合法性合理性校验
    if (!itemId) {
        ctx.app.emit('error', {
            code: '2',
            message: '物品id不能为空！'
        }, ctx);
        return;
    }
    if (!itemName || !itemDesc) {
        ctx.app.emit('error', {
            code: '2',
            message: '物品简介或物品名称不能为空！'
        }, ctx);
        return;
    }
    await next();
};

// 方块表单校验
const blocksFormValidator = async (ctx, next) => {
    let {blockId, blockName, blockDesc} = ctx.request.body;
    // 合法性合理性校验
    if (!blockId) {
        ctx.app.emit('error', {
            code: '2',
            message: '方块id不能为空！'
        }, ctx);
        return;
    }
    if (!blockName || !blockDesc) {
        ctx.app.emit('error', {
            code: '2',
            message: '方块简介或方块名称不能为空！'
        }, ctx);
        return;
    }
    await next();
};

// 视频表单校验
const videoFormValidator = async (ctx, next) => {
    let {video_name, video_url, video_desc, video_type, video_source} = ctx.request.body;
    // 合法性合理性校验
    if (!video_name || !video_desc) {
        ctx.app.emit('error', {
            code: '2',
            message: '视频名称或视频简介不能为空！'
        }, ctx);
        return;
    }
    if (!video_url) {
        ctx.app.emit('error', {
            code: '2',
            message: '视频路径不能为空！'
        }, ctx);
        return;
    }
    if (!video_type) {
        ctx.app.emit('error', {
            code: '2',
            message: '视频类型不能为空！'
        }, ctx);
        return;
    }
    if (!video_source) {
        ctx.app.emit('error', {
            code: '2',
            message: '视频来源不能为空！'
        }, ctx);
        return;
    }
    await next();
};
module.exports = {idValidator, gameFormValidator, itemsFormValidator, videoFormValidator, blocksFormValidator};